{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "logical and\n",
      "epoch 0 sample 0  [1 2 0 0 0 0 0]\n",
      "epoch 0 sample 1  [1 2 0 1 -1 0 -1]\n",
      "epoch 0 sample 2  [0 2 -1 1 0 -1 -1]\n",
      "epoch 0 sample 3  [0 1 -2 0 1 1 1]\n",
      "epoch 1 sample 0  [1 2 -1 0 0 0 0]\n",
      "epoch 1 sample 1  [1 2 -1 0 0 0 0]\n",
      "epoch 1 sample 2  [1 2 -1 1 0 -1 -1]\n",
      "epoch 1 sample 3  [1 1 -2 0 1 1 1]\n",
      "epoch 2 sample 0  [2 2 -1 0 0 0 0]\n",
      "epoch 2 sample 1  [2 2 -1 1 -1 0 -1]\n",
      "epoch 2 sample 2  [1 2 -2 0 0 0 0]\n",
      "epoch 2 sample 3  [1 2 -2 1 0 0 0]\n",
      "epoch 3 sample 0  [1 2 -2 0 0 0 0]\n",
      "epoch 3 sample 1  [1 2 -2 0 0 0 0]\n",
      "epoch 3 sample 2  [1 2 -2 0 0 0 0]\n",
      "epoch 3 sample 3  [1 2 -2 1 0 0 0]\n",
      "epoch 4 sample 0  [1 2 -2 0 0 0 0]\n",
      "epoch 4 sample 1  [1 2 -2 0 0 0 0]\n",
      "epoch 4 sample 2  [1 2 -2 0 0 0 0]\n",
      "epoch 4 sample 3  [1 2 -2 1 0 0 0]\n",
      "epoch 5 sample 0  [1 2 -2 0 0 0 0]\n",
      "epoch 5 sample 1  [1 2 -2 0 0 0 0]\n",
      "epoch 5 sample 2  [1 2 -2 0 0 0 0]\n",
      "epoch 5 sample 3  [1 2 -2 1 0 0 0]\n",
      "epoch 6 sample 0  [1 2 -2 0 0 0 0]\n",
      "epoch 6 sample 1  [1 2 -2 0 0 0 0]\n",
      "epoch 6 sample 2  [1 2 -2 0 0 0 0]\n",
      "epoch 6 sample 3  [1 2 -2 1 0 0 0]\n",
      "epoch 7 sample 0  [1 2 -2 0 0 0 0]\n",
      "epoch 7 sample 1  [1 2 -2 0 0 0 0]\n",
      "epoch 7 sample 2  [1 2 -2 0 0 0 0]\n",
      "epoch 7 sample 3  [1 2 -2 1 0 0 0]\n",
      "epoch 8 sample 0  [1 2 -2 0 0 0 0]\n",
      "epoch 8 sample 1  [1 2 -2 0 0 0 0]\n",
      "epoch 8 sample 2  [1 2 -2 0 0 0 0]\n",
      "epoch 8 sample 3  [1 2 -2 1 0 0 0]\n",
      "epoch 9 sample 0  [1 2 -2 0 0 0 0]\n",
      "epoch 9 sample 1  [1 2 -2 0 0 0 0]\n",
      "epoch 9 sample 2  [1 2 -2 0 0 0 0]\n",
      "epoch 9 sample 3  [1 2 -2 1 0 0 0]\n",
      "logical or\n",
      "epoch 0 sample 0  [1 2 0 0 0 0 0]\n",
      "epoch 0 sample 1  [1 2 0 1 0 0 0]\n",
      "epoch 0 sample 2  [1 2 0 1 0 0 0]\n",
      "epoch 0 sample 3  [1 2 0 1 0 0 0]\n",
      "epoch 1 sample 0  [1 2 0 0 0 0 0]\n",
      "epoch 1 sample 1  [1 2 0 1 0 0 0]\n",
      "epoch 1 sample 2  [1 2 0 1 0 0 0]\n",
      "epoch 1 sample 3  [1 2 0 1 0 0 0]\n",
      "epoch 2 sample 0  [1 2 0 0 0 0 0]\n",
      "epoch 2 sample 1  [1 2 0 1 0 0 0]\n",
      "epoch 2 sample 2  [1 2 0 1 0 0 0]\n",
      "epoch 2 sample 3  [1 2 0 1 0 0 0]\n",
      "epoch 3 sample 0  [1 2 0 0 0 0 0]\n",
      "epoch 3 sample 1  [1 2 0 1 0 0 0]\n",
      "epoch 3 sample 2  [1 2 0 1 0 0 0]\n",
      "epoch 3 sample 3  [1 2 0 1 0 0 0]\n",
      "epoch 4 sample 0  [1 2 0 0 0 0 0]\n",
      "epoch 4 sample 1  [1 2 0 1 0 0 0]\n",
      "epoch 4 sample 2  [1 2 0 1 0 0 0]\n",
      "epoch 4 sample 3  [1 2 0 1 0 0 0]\n",
      "epoch 5 sample 0  [1 2 0 0 0 0 0]\n",
      "epoch 5 sample 1  [1 2 0 1 0 0 0]\n",
      "epoch 5 sample 2  [1 2 0 1 0 0 0]\n",
      "epoch 5 sample 3  [1 2 0 1 0 0 0]\n",
      "epoch 6 sample 0  [1 2 0 0 0 0 0]\n",
      "epoch 6 sample 1  [1 2 0 1 0 0 0]\n",
      "epoch 6 sample 2  [1 2 0 1 0 0 0]\n",
      "epoch 6 sample 3  [1 2 0 1 0 0 0]\n",
      "epoch 7 sample 0  [1 2 0 0 0 0 0]\n",
      "epoch 7 sample 1  [1 2 0 1 0 0 0]\n",
      "epoch 7 sample 2  [1 2 0 1 0 0 0]\n",
      "epoch 7 sample 3  [1 2 0 1 0 0 0]\n",
      "epoch 8 sample 0  [1 2 0 0 0 0 0]\n",
      "epoch 8 sample 1  [1 2 0 1 0 0 0]\n",
      "epoch 8 sample 2  [1 2 0 1 0 0 0]\n",
      "epoch 8 sample 3  [1 2 0 1 0 0 0]\n",
      "epoch 9 sample 0  [1 2 0 0 0 0 0]\n",
      "epoch 9 sample 1  [1 2 0 1 0 0 0]\n",
      "epoch 9 sample 2  [1 2 0 1 0 0 0]\n",
      "epoch 9 sample 3  [1 2 0 1 0 0 0]\n",
      "logical xor\n",
      "epoch 0 sample 0  [1 2 0 0 0 0 0]\n",
      "epoch 0 sample 1  [1 2 0 1 0 0 0]\n",
      "epoch 0 sample 2  [1 2 0 1 0 0 0]\n",
      "epoch 0 sample 3  [1 2 0 1 -1 -1 -1]\n",
      "epoch 1 sample 0  [0 1 -1 0 0 0 0]\n",
      "epoch 1 sample 1  [0 1 -1 0 1 0 1]\n",
      "epoch 1 sample 2  [1 1 0 1 0 0 0]\n",
      "epoch 1 sample 3  [1 1 0 1 -1 -1 -1]\n",
      "epoch 2 sample 0  [0 0 -1 0 0 0 0]\n",
      "epoch 2 sample 1  [0 0 -1 0 1 0 1]\n",
      "epoch 2 sample 2  [1 0 0 0 0 1 1]\n",
      "epoch 2 sample 3  [1 1 1 1 -1 -1 -1]\n",
      "epoch 3 sample 0  [0 0 0 0 0 0 0]\n",
      "epoch 3 sample 1  [0 0 0 0 1 0 1]\n",
      "epoch 3 sample 2  [1 0 1 1 0 0 0]\n",
      "epoch 3 sample 3  [1 0 1 1 -1 -1 -1]\n",
      "epoch 4 sample 0  [0 -1 0 0 0 0 0]\n",
      "epoch 4 sample 1  [0 -1 0 0 1 0 1]\n",
      "epoch 4 sample 2  [1 -1 1 0 0 1 1]\n",
      "epoch 4 sample 3  [1 0 2 1 -1 -1 -1]\n",
      "epoch 5 sample 0  [0 -1 1 1 0 0 -1]\n",
      "epoch 5 sample 1  [0 -1 0 0 1 0 1]\n",
      "epoch 5 sample 2  [1 -1 1 0 0 1 1]\n",
      "epoch 5 sample 3  [1 0 2 1 -1 -1 -1]\n",
      "epoch 6 sample 0  [0 -1 1 1 0 0 -1]\n",
      "epoch 6 sample 1  [0 -1 0 0 1 0 1]\n",
      "epoch 6 sample 2  [1 -1 1 0 0 1 1]\n",
      "epoch 6 sample 3  [1 0 2 1 -1 -1 -1]\n",
      "epoch 7 sample 0  [0 -1 1 1 0 0 -1]\n",
      "epoch 7 sample 1  [0 -1 0 0 1 0 1]\n",
      "epoch 7 sample 2  [1 -1 1 0 0 1 1]\n",
      "epoch 7 sample 3  [1 0 2 1 -1 -1 -1]\n",
      "epoch 8 sample 0  [0 -1 1 1 0 0 -1]\n",
      "epoch 8 sample 1  [0 -1 0 0 1 0 1]\n",
      "epoch 8 sample 2  [1 -1 1 0 0 1 1]\n",
      "epoch 8 sample 3  [1 0 2 1 -1 -1 -1]\n",
      "epoch 9 sample 0  [0 -1 1 1 0 0 -1]\n",
      "epoch 9 sample 1  [0 -1 0 0 1 0 1]\n",
      "epoch 9 sample 2  [1 -1 1 0 0 1 1]\n",
      "epoch 9 sample 3  [1 0 2 1 -1 -1 -1]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "# 逻辑与数据\n",
    "samples_and = [[0, 0, 0], [1, 0, 0],  [0, 1, 0],  [1, 1, 1],]\n",
    "\n",
    "# 逻辑或数据\n",
    "samples_or = [[0, 0, 0],  [1, 0, 1],  [0, 1, 1],  [1, 1, 1],]\n",
    "\n",
    "# 逻辑异或数据\n",
    "samples_xor = [[0, 0, 0],  [1, 0, 1],  [0, 1, 1],  [1, 1, 0],]\n",
    "\n",
    "def perceptron(samples):\n",
    "#权重\n",
    "    w=np.array([1,2])\n",
    "#偏置\n",
    "    b = 0\n",
    "    a = 1\n",
    "#训练10遍\n",
    "    for i in range(10):\n",
    "        for j in range(4):\n",
    "#矩阵的第j行的前两个数值\n",
    "            x = np.array(samples[j][:2])\n",
    "#将未激活的值输入sigmoid函数 dot:向量的点乘运算\n",
    "            y = 1 if np.dot(w, x) + b > 0 else 0\n",
    "#真实值\n",
    "            d = np.array(samples[j][2])\n",
    "\n",
    "            delta_b = a * (d - y)\n",
    "            delta_w = a * (d - y) * x\n",
    "            print('epoch {} sample {}  [{} {} {} {} {} {} {}]'.format(i, j, w[0], w[1], b, y, delta_w[0], delta_w[\n",
    "    1], delta_b))\n",
    "#反向传播，更新权重\n",
    "            w = w + delta_w\n",
    "            b = b + delta_b\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    print('logical and')\n",
    "    perceptron(samples_and)\n",
    "    print('logical or')\n",
    "    perceptron(samples_or)\n",
    "    print('logical xor')\n",
    "    perceptron(samples_xor)\n",
    "\n",
    "\n"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从逻辑与结果可以看出，从第三次训练后，通过神经网络的BP，权重w0,w1和偏置b已经趋于稳定：w0=1,w1=2,b=-2。对于逻辑或，从输出样本的第一次训练之后，对权重和偏置的BP趋于稳定，参数就已经停⽌更新了，这⾥⽐较巧合，初始化使⽤的参数，正好满⾜这⾥的数据，最终得到的参数：w0=1,w1=2,b=0。 对于异或数据的训练，每一次反馈得到的w0,w1和b都不同，可以得出感知器不能实现异或的功能，也就是不能训练得到实现异或功能的模型。逻辑与和逻辑或都是线性的模型，它的输入和输出都是在一条直线上，这条直线将平面区域分割为两份，在直线的两端分别满足大于和小于0，在直线上满足等于0,也就是说它是线性的。而逻辑异或它在平面区域中是线性不可分的，如下图所示：\n",
    "\n",
    "![image.png](attachment:image.png)\n",
    "因此用线性模型得不到异或模型参数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
